/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package service;

import Exception.ObjetoNaoEncontradoException;
import Exception.ServicoException;
import dao.PessoaDAO;
import dao.anotacoes.Singleton;
import dao.impl.PessoaDAOImpl;
import fabrica.FabricaComCache;
import java.util.List;
import modelo.Pessoa;
import service.anotacoes.Transacional;

/**
 *
 * @author Heliokann
 */
@Singleton
public class PessoaService {

    private PessoaDAO pessoaDAO;
    
    public PessoaService(){
        try {
            pessoaDAO = FabricaComCache.getObj(PessoaDAOImpl.class);
        } catch (Throwable ex) {
            ex.printStackTrace();
        }
    }
    
    public List<Pessoa> getListaCompleta() {
        return pessoaDAO.getListaCompleta();
    }
    
    @Transacional
    public void salvar(Pessoa pessoa) throws ServicoException {
        pessoaDAO.inclui(pessoa);
    }

    @Transacional
    public void alterar( Pessoa pessoa) throws ServicoException{
        System.out.println("alterar="+pessoa.getId() );
        pessoaDAO.altera(pessoa);
    }
    
    @Transacional
    public void excluir( Pessoa pessoa) throws ServicoException{
        pessoaDAO.exclui(pessoa);
    }
    
    public Pessoa getPessoaByLogin(String login) throws ObjetoNaoEncontradoException{
        return pessoaDAO.getByLogin(login);
    }
    
    public List<Pessoa> getPessoaByNome(String nome){
        return pessoaDAO.getByNome(nome);   
    }
    
}
